package main

import (
	"fmt"
	"reflect"
)
func SquaresOfSumAndDiff(a int64, b int64) (int64, int64) {
	return (a+b) * (a+b), (a-b) * (a-b)
}
func main() {
	var x float64 = 3.14
	fmt.Println("Type:", reflect.TypeOf(x))
	v := reflect.ValueOf(x)
	fmt.Println("Type:", v.Type())
	fmt.Println("kind:", v.Kind())
	fmt.Println("value:", v.Float())
	fmt.Println(v.Interface())
	fmt.Println(v.Interface().(float64))
	fmt.Println(v.CanSet())

	v = reflect.ValueOf(&x)
	fmt.Println(v.CanSet())
	v = v.Elem()
	fmt.Println(v.CanSet())
	v.SetFloat(3.141592)
	fmt.Println(v.Interface())
	fmt.Println(x)
	result,e := SquaresOfSumAndDiff(3, 4)
	fmt.Println(result, e)
}